# -*- coding: utf-8 -*-
# @Time    : 2022-12-02 20:13
# @Author  : CMS！！
# @FileName: 3.py
# @Software: PyCharm

# 3  对2中的表结构，用SQLAchemy模块来实现同样的操作；对数据库的操作，需要加入异常处理和显示异常信息的逻辑；
# 请捕获数据库访问的异常信息；

import sqlalchemy

from sqlalchemy import Column, String, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 创建对象的基类
Base = declarative_base()


class Sites(Base):
    __tablename__ = 'sites'

    name = sqlalchemy.Column(sqlalchemy.String(50), primary_key=True)
    url = sqlalchemy.Column(sqlalchemy.String(50))


# 创建数据库连接引擎，指定使用的数据库访问驱动
engine = create_engine('mysql+pymysql://root:2267000140aa!@127.0.0.1:3306/test')

# 创建DBSession类型:
DBSession = sessionmaker(bind=engine)

# 创建Session的实例（对象）
session = DBSession()

# 1 做查询
try:
    user = session.query(Sites).filter(Sites.name == 'baidu').first()
    print(user.name, user.url)
    print("查询成功")
except:
    print("查询失败")

# 2 记录的添加
try:
    new_site = Sites(name='sina', url='www,sina.com')
    session.add(new_site)
    session.commit()
    session.close()
except Exception as e:
    print("ERROR")

# 3 删除数据
try:
    session.query(Sites).filter(Sites.name == 'sina').delete()
    session.commit()
except Exception as e:
    print("ERROR")


# 4 更新数据
try:
    session.query(Sites).filter(Sites.name == 'baidu').update(
        {"name": "baidu"})
except Exception as e:
    print("ERROR")
